package edu.upc.dao.consulta.impl;

import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.ArrayList;
import java.util.List;

import javax.sql.DataSource;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Component;

import edu.upc.dao.consulta.ConsultaOfertaEspecialidadDao;
import edu.upc.model.OfertaEspecialidad;

@Component
public class ConsultaOfertaEspecialidadDaoImpl implements ConsultaOfertaEspecialidadDao {

	@Autowired
	DataSource dataSource;
	 
	public List<OfertaEspecialidad> obtenerOfertaEspecialidad(int codigo) {
		
		String sql = "select id_avi, cargo_avi, inicio_avi, fin_avi, descripcion_avi, jornadaLaboral_avi, disponibilidad_avi, requerimientos_avi,  beneficios_avi,  sueldo_avi, estado_avi, id_Especialidad from TB_AVISO where id_especialidad = ?";
		
		Connection conn = null;
		PreparedStatement ps = null; 
		ResultSet rs = null;
		List<OfertaEspecialidad> lst = new ArrayList<OfertaEspecialidad>();
		try {
			conn = dataSource.getConnection();
			ps = conn.prepareStatement(sql);
			ps.setInt(1, codigo);
			rs = ps.executeQuery();
			lst= mapOfertaEspecialidad(rs);
			
		} catch (SQLException e) {
			throw new RuntimeException("SQL exception occurred finding by merchant number", e);
		} finally {
			if (rs != null) {
				try {
					// Close to prevent database cursor exhaustion
					rs.close();
				} catch (SQLException ex) {
				}
			}
			if (ps != null) {
				try {
					// Close to prevent database cursor exhaustion
					ps.close();
				} catch (SQLException ex) {
				}
			}
			if (conn != null) {
				try {
					// Close to prevent database connection exhaustion
					conn.close();
				} catch (SQLException ex) {
				}
			}
		}
		return lst;
	}
	
	private List<OfertaEspecialidad> mapOfertaEspecialidad(ResultSet rs) throws SQLException {
		List<OfertaEspecialidad> listOferta = new ArrayList<OfertaEspecialidad>();
		while(rs.next()){
		OfertaEspecialidad ofertaLaboral=new OfertaEspecialidad();
		//ofertaLaboral.setId_avi(Integer.parseInt(rs.getString("ID")));
		ofertaLaboral.setInicio_avi(rs.getDate("inicio_avi"));
		ofertaLaboral.setFin_avi(rs.getDate("fin_avi"));
		ofertaLaboral.setDescripcion_avi(rs.getString("descripcion_avi"));
		ofertaLaboral.setJornadaLaboral_avi(rs.getString("jornadaLaboral_avi"));
		ofertaLaboral.setDisponibilidad_avi(rs.getString("disponibilidad_avi"));
		ofertaLaboral.setRequerimientos_avi(rs.getString("requerimientos_avi"));
		ofertaLaboral.setBeneficios_avi(rs.getString("beneficios_avi"));
		ofertaLaboral.setSueldo_avi(rs.getDouble("sueldo_avi"));
		ofertaLaboral.setId_Especialidad(rs.getInt("id_Especialidad"));
		listOferta.add(ofertaLaboral);
		}
		return listOferta;
	}

	@Override
	public List<OfertaEspecialidad> obtenerOfertaEspecialidad() {
		// TODO Auto-generated method stub
		return null;
	}







}
